import { observe } from './observer/index'
import Watcher from "./observer/watcher";

/**
 * 初始化生命周期、事件、 props、 methods、 data、 computed 与 watch 等
 * @param vm Vue实例
 */
export function initState(vm) {
  const opts = vm.$options
  if (opts.props) {
    initProps(vm)
  }
  if (opts.methods) {
    initMethods(vm)
  }
  if (opts.data) {
    initData(vm)
  }
  if (opts.computed) {
    initComputed(vm)
  }
  if (opts.watch) {
    initWatch(vm)
  }
}

function initProps () {

}

function initMethods () {

}

function initData (vm) {
  let data = vm.$options.data
  data = vm._data = typeof data === 'function'
    ? data.call(vm)
    : data
  observe(data)

  new Watcher()
  vm._data.name
}

function initComputed () {

}

function initWatch () {

}


